#!/usr/bin/env python3
"""
验证安装和配置是否正确
"""

import sys
from pathlib import Path

print("=" * 60)
print("SkyWalking 数据采集系统 - 环境验证")
print("=" * 60)

# 1. 检查 Python 版本
print("\n1. 检查 Python 版本...")
if sys.version_info >= (3, 11):
    print(f"   ✅ Python 版本: {sys.version.split()[0]}")
else:
    print(f"   ❌ Python 版本过低: {sys.version.split()[0]}")
    print("   需要 Python 3.11+")
    sys.exit(1)

# 2. 检查必需的包
print("\n2. 检查必需的包...")
required_packages = [
    ('streamlit', 'streamlit'),
    ('requests', 'requests'),
    ('pandas', 'pandas'),
    ('plotly', 'plotly'),
    ('sqlalchemy', 'sqlalchemy'),
    ('apscheduler', 'apscheduler.schedulers.blocking'),
    ('python-dotenv', 'dotenv')
]

missing_packages = []
for display_name, import_name in required_packages:
    try:
        __import__(import_name)
        print(f"   ✅ {display_name}")
    except ImportError:
        missing_packages.append(display_name)
        print(f"   ❌ {display_name} - 未安装")

if missing_packages:
    print(f"\n❌ 缺少 {len(missing_packages)} 个必需包")
    print("\n请运行以下命令安装依赖：")
    print("   pip install -r requirements.txt")
    sys.exit(1)

# 3. 检查配置文件
print("\n3. 检查配置文件...")
config_file = Path(__file__).parent / "config.env"
if config_file.exists():
    print(f"   ✅ 配置文件存在: {config_file}")
    
    # 尝试加载配置
    try:
        from dotenv import load_dotenv
        import os
        
        load_dotenv(config_file)
        
        # 检查关键配置项
        key_configs = [
            ('SKYWALKING_URL', 'SkyWalking GraphQL API 地址'),
            ('DATABASE_URL', '数据库连接 URL'),
            ('DEFAULT_SERVICE_NAME', '默认服务名称')
        ]
        
        print("\n   关键配置项:")
        for key, desc in key_configs:
            value = os.getenv(key)
            if value:
                # 隐藏敏感信息
                if 'password' in key.lower() or 'DATABASE_URL' in key:
                    display_value = value[:20] + "..." if len(value) > 20 else value
                else:
                    display_value = value
                print(f"   ✅ {desc}: {display_value}")
            else:
                print(f"   ⚠️  {desc}: 未配置")
    
    except Exception as e:
        print(f"   ⚠️  加载配置文件时出错: {e}")
else:
    print(f"   ⚠️  配置文件不存在: {config_file}")
    print("   请从 env.example 复制并编辑配置文件：")
    print("   cp env.example config.env")

# 4. 检查目录结构
print("\n4. 检查目录结构...")
required_dirs = ['collector', 'database', 'dashboard', 'docker']
base_dir = Path(__file__).parent

for dir_name in required_dirs:
    dir_path = base_dir / dir_name
    if dir_path.exists():
        print(f"   ✅ {dir_name}/")
    else:
        print(f"   ❌ {dir_name}/ - 目录不存在")

print("\n" + "=" * 60)
print("✅ 环境验证完成！")
print("=" * 60)
print("\n下一步:")
print("1. 如果配置文件不存在，请创建: cp env.example config.env")
print("2. 编辑 config.env 配置 SkyWalking 地址")
print("3. 启动采集服务: python3 collector_service.py")
print("4. 启动 Dashboard: streamlit run streamlit_dashboard.py")
print("\n或使用 Docker:")
print("   ./docker/start.sh")
print()

